PyTorch 中常用的初始化神经网络权重的函数

您所在的位置:网站首页 pytorch 膨胀卷积 PyTorch 中常用的初始化神经网络权重的函数

PyTorch 中常用的初始化神经网络权重的函数

2023-06-27 23:43| 来源: 网络整理| 查看: 265

nn.init.normal_: 将权重张量初始化为从正态分布中采样的随机值。具体来说,对于一个大小为 (n, m) 的权重张量 W W W,nn.init.normal_ 的操作相当于 W i , j ∼ N ( 0 , s t d 2 ) W_{i,j} \sim \mathcal{N}(0, std^2) Wi,j​∼N(0,std2),其中 s t d std std 是一个标准差,可以通过调整参数 std 的值来控制权重的初始化范围。

nn.init.xavier_normal_: 将权重张量初始化为从均匀分布中采样的随机值。具体来说,对于一个大小为 (n, m) 的权重张量 W W W,nn.init.xavier_normal_ 的操作相当于 W i , j ∼ U ( − 6 n + m , 6 n + m ) W_{i,j} \sim \mathcal{U}(-\sqrt{\frac{6}{n+m}}, \sqrt{\frac{6}{n+m}}) Wi,j​∼U(−n+m6​ ​,n+m6​ ​),其中 n n n 和 m m m 分别是权重张量的输入和输出维度。这个方法是基于 Xavier Glorot 和 Yoshua Bengio 在他们的论文 “Understanding the difficulty of training deep feedforward neural networks” 中提出的启发式方法,旨在使初始化的权重分布更适合于反向传播算法,并提高模型的训练效果。

nn.init.kaiming_normal_: 将权重张量初始化为从正态分布中采样的随机值,并根据激活函数的特性对权重进行缩放。具体来说,对于一个大小为 (n, m) 的权重张量 W W W,nn.init.kaiming_normal_ 的操作相当于 W i , j ∼ N ( 0 , 2 n ) W_{i,j} \sim \mathcal{N}(0, \sqrt{\frac{2}{n}}) Wi,j​∼N(0,n2​ ​),其中 n n n 是权重张量的输入维度。对于不同的激活函数,缩放因子也不同,可以通过调整参数 mode 和 nonlinearity 来控制。

nn.init.orthogonal_: 将权重张量初始化为正交矩阵。具体来说,对于一个大小为 (n, m) 的权重张量 W W W,nn.init.orthogonal_ 的操作相当于对 W W W 进行 QR 分解,然后将 Q Q Q 作为初始化的权重张量。这个方法在循环神经网络 (RNN) 中常被使用,可以减少梯度爆炸和消失的问题。

nn.init.constant_: 将权重张量初始化为常数值。具体来说,对于一个大小为 (n, m) 的权重张量 W W W,nn.init.constant_ 的操作相当于 W i , j = v a l W_{i,j} = val Wi,j​=val,其中 val 是一个常数值,可以通过调整参数 val 的值来控制权重的初始化。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3